package 设计模式.状态模式.demo3;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
/**
 * @ClassName Test
 * @Description 测试类
 *
 * 状态模式的使用案例之spring状态机使用
 * 　　状态机模式，是在context的基础上，进行的一种优化。spring-statemachine模块有提供相关功能。
 * 需求：
 * 　　基于spring-statemachine实现状态机模式应用。这里以订单状态流程处理为例：
 */
@SpringBootApplication
public class Test {
    public static void main(String[] args) {
        Thread.currentThread().setName("主线程");
        ConfigurableApplicationContext context = SpringApplication.run(Test.class,args);

        IOrderService orderService = (IOrderService) context.getBean("orderService");
        orderService.create();
        orderService.create();
        orderService.pay(1);
        new Thread("客户线程"){
            @Override
            public void run() {
                orderService.deliver(1);
                orderService.receive(1);

            }
        }.start();
        orderService.pay(2);
        orderService.deliver(2);
        orderService.receive(2);
        System.out.println("订单全部状态："+orderService.getOrders());
    }
}
